package com.zjsru.plan2023.oneday;

/**
 * @Author: cookLee
 * @Date: 2023-08-22
 * 到最近的人的最大距离
 * \
 * 输入：seats = [1,0,0,0,1,0,1]
 * 输出：2
 * 解释：
 * 如果亚历克斯坐在第二个空位（seats[2]）上，他到离他最近的人的距离为 2 。
 * 如果亚历克斯坐在其它任何一个空位上，他到离他最近的人的距离为 1 。
 * 因此，他到离他最近的人的最大距离是 2 。
 * \
 * 输入：seats = [1,0,0,0]
 * 输出：3
 * 解释：
 * 如果亚历克斯坐在最后一个座位上，他离最近的人有 3 个座位远。
 * 这是可能的最大距离，所以答案是 3 。
 * 示例 3：
 */
public class MaxDistToClosest {

    /**
     * 模拟
     *
     * @param seats 座位
     * @return int
     */
    public int maxDistToClosest(int[] seats) {
        int ans = 0;
        //统计有人的位置（即为1）
        int last = -1;
        int len = seats.length;
        for (int i = 0; i < len; i++) {
            if (seats[i] == 1) {
                if (last != -1) {
                    //获取两个有人位置隔的数量 除以2即是单边长
                    ans = Math.max(ans, (i - last) / 2);
                } else {
                    //直接获得距离有人处的位置
                    ans = Math.max(ans, i);
                }
                last = i;
            }
        }
        //计算放在最后一个位置时的距离
        return Math.max(ans, len - 1 - last);
    }

    public static void main(String[] args) {
        MaxDistToClosest maxDistToClosest = new MaxDistToClosest();
        int[] seats = new int[]{1, 0, 0, 0, 1, 0, 1};
        System.out.println(maxDistToClosest.maxDistToClosest(seats));
    }
}
